home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <egb.h>
-
- extern char *work;
-
-
- // 47a VC3 regs指定
- // 47c VC3 regsデータ内容指定
-
- // VC3 regs
- // 2000 色数
- // 2010 ビデオ表示開始/表示状態取得/表示フィールド/指定
- // 2011 表示倍率指定
- // 2027 ソースビデオ映像のx1
- // 2028 ソースビデオ映像のx2
- // 2029 ソースビデオ映像のy1
- // 202a ソースビデオ映像のy2
- // 202b 表示開始位置のx
- // 202c 表示開始位置のy
- // 202d vramオフセット(1ラインのバイト数)
- //
-
- void videoSet()
- {
- int i;
- outpw(0x47a,0);
- outp(0x47d,2);
-
- outpw(0x47a,0x2000);
- outp(0x47c,1);
- i = inp(0x47c) & 0x80;
-
- outp(0x47d,0x11);
- outp(0x47f,9);
-
- outpw(0x47a,0x2010);
- i = inp(0x47c) & 0x7f;
- outp(0x47c,i);
- outp(0x47c,0);
- outp(0x47c,0x80);
- outp(0x47f,0);
-
- /* 表示モード設定 */
-
- outp(0x47e,4);
-
-
- outpw(0x47a,0x2011);
- outp(0x47f,9);
-
- outp(0x47c,0);
- outp(0x47d,0x80);
-
- outpw(0x47a,0x2020);
- outpw(0x47c,0xfb4);
-
- outpw(0x47a,0x2022);
- outpw(0x47c,0x137);
-
- outpw(0x47a,0x2023);
- outpw(0x47c,0x7ff);
-
- outpw(0x47a,0x2024);
- outpw(0x47c,0xfef);
-
- outpw(0x47a,0x2026);
- outpw(0x47c,0x7ff);
-
- outpw(0x47a,0x2027);
- outpw(0x47c,0);
-
- outpw(0x47a,0x2028);
- outpw(0x47c,0x27f);
-
- outpw(0x47a,0x2029);
- outpw(0x47c,0);
-
- outpw(0x47a,0x202a);
- outpw(0x47c,0xef);
-
- outpw(0x47a,0x202b);
- outpw(0x47c,0x60*2);
-
- outpw(0x47a,0x202c);
- outpw(0x47c,0);
-
- outpw(0x47a,0x202d);
- outpw(0x47c,0x200);
-
- outpw(0x47a,0x2010);
- i = inp(0x47e) | 1;
- outp(0x47e,i);
-
- }
-
- int vc3_check()
- {
- int i;
-
- i = inp(0x479) & 0x40;
- if (i!=0) return 1;
-
- outpw(0x47A,0x2000);
- i = inp(0x47c) & 1;
- if (i!=1) return 1;
-
- outpw(0x50a0,4);
- i = inp(0x50a2) & 0x80;
- if (i!=0) return 1;
-
- return 0;
- }
- int VC3_check2()
- {
- int i;
-
- outpw(0x47A,0x2010);
- i = inp(0x47E) & 1;
- return i;
- }
-
- void reset_VC3()
- {
- int i;
-
- outpw(0x47A,0x2010);
- outp(0x47F,2);
-
- i=0;
- while(i<1000000 && ((inp(0x47E) & 1) != 0)) i++;
-
- outp(0x47F,0);
- outpw(0x47A,0x2000);
- outp(0x47C,1);
- }
-
- int video_flg;
- void VC_on()
- {
- if (vc3_check()) return;
- if (VC3_check2()) reset_VC3();
-
- EGB_writePage(work,1);
- EGB_displayStart(work,0,512,32);
- videoSet();
- EGB_writePage(work,0);
- video_flg = 1;
- }
- void VC_off()
- {
- if (VC3_check2()) reset_VC3();
- EGB_writePage(work,1);
- EGB_color(work,1,0);
- EGB_clearScreen(work);
- EGB_writePage(work,0);
- video_flg = 0;
- }
-